package com.lan.service.sys;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.lan.entity.sys.Menu;
import com.lan.utils.tree.TreeNode;
import com.lan.utils.tree.TreeTableNode;
import com.lan.viewObject.Query;

import java.util.List;

/**
 * <p>
 *  菜单 Service
 * </p>
 *
 * @author shadow
 * @since 2022-06-04
 */
public interface MenuService {

    /**
     * 查询 -> id
     * @param id id
     * @return Menu
     * */
    Menu getById(final String id);

    /**
     * 查询 -> 角色id
     * @param roleId roleId
     * @return list
     * */
    List<Menu> getMenuListByRoleId(final String roleId);

    /**
     * 查询 -> 菜单树
     * @param roleId roleId
     * @return list
     * */
    List<TreeNode<Menu>> getMenuTree(final String roleId);

    /**
     * 查询 -> 条件查询 QueryWrapper
     * @param menu menu
     * @return list
     * */
    List<Menu> getListByWrapper(final Menu menu);

    /**
     * 查询 -> 分页查询 QueryWrapper
     * @param query query
     * @return iPage
     * */
    IPage<Menu> getPageByWrapper(final Query<Menu> query);

    /**
     * 查询 -> 树形表格
     * @param query query
     * @return list
     * */
    List<TreeTableNode> getTreeTableList(Query<Menu> query);

    /**
     * 新增
     * @param menu menu
     * @return int
     * */
    int save(final Menu menu);

    /**
     * 更新 -> id
     * @param menu menu
     * @return int
     * */
    int updateById(final Menu menu);

    /**
     * 删除 -> id
     * @param id id
     * @return int
     * */
    int deleteById(final String id);

}
